package com.xiaoze.steampy;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;

import java.util.Collections;

/**
 * @author 小泽
 * @create 2022-03-28  11:16
 * 记得每天敲代码哦
 */
public class practerApplication {
    public static void main(String[] args) {
        FastAutoGenerator.create("jdbc:mysql://localhost:3306/steampy?&serverTimezone=Hongkong", "root", "010429")
                .globalConfig(builder -> {
                    builder.author("小泽") // 设置作者
                            // .enableSwagger() // 开启 swagger 模式
                            // .fileOverride() // 覆盖已生成文件
                            .commentDate("yyyy-MM-dd")
                            .outputDir(System.getProperty("user.dir")+"\\src\\main\\java"); // 指定输出目录

                })
                .packageConfig(builder -> {
                    builder.parent("com") // 设置父包名
                            .moduleName("xiaoze.steampy") // 设置父包模块名
                            .entity("entity")
                            .service("service")
                            .serviceImpl("serviceImpl")
                            .controller("controller")
                            .mapper("mapper")
                            .xml("mapper")
                            .pathInfo(Collections.singletonMap(OutputFile.mapperXml, System.getProperty("user.dir")+"\\src\\main\\resources")); // 设置mapperXml生成路径
                })
                .strategyConfig(builder -> {
                    builder.addInclude("RechargeRecord") // 设置需要生成的表名
                            .addTablePrefix("t_", "c_","M_") // 设置过滤表前缀
                            .serviceBuilder()//1：service策略配置
                            .formatServiceFileName("%sService")
                            .formatServiceImplFileName("%sServiceImpl")
                            .entityBuilder()//2：entity策略配置
                            .enableLombok()
                            .logicDeleteColumnName("deleted")//说明逻辑删除是那个字段
                            .enableTableFieldAnnotation()  //属性加上说明注解
                            .controllerBuilder()//3：controller策略配置
                            .formatFileName("%sController")
                            .enableRestStyle()
                            .mapperBuilder()//4：mapper策略配置
                            .superClass(BaseMapper.class)//继承那个父类
                            .formatMapperFileName("%sMapper")
                            .enableMapperAnnotation()//@mapper开启
                            .formatXmlFileName("%sMapper");//XML名
                })
                .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板，默认的是Velocity引擎模板
                .execute();

    }
}

